--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/AddInterfaceOptions.test.js 59c3a0c47e87e8db699d25b757bb7b599215ddbd (59c3a0c4) Text, 14.93 KB
Tff7b72import Tb4b4b4{ Te6edf3mount Tb4b4b4} Tff7b72from Ta5d6ff"@vue/test-utils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3viTb4b4b4, Te6edf3beforeEach Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3AddInterfacePage Tff7b72from Ta5d6ff"../../meshchatx/src/frontend/components/interfaces/AddInterfacePage.vue"Tb4b4b4;
Tff7b72const Te6edf3mockAxios Tff7b72= Tb4b4b4{
Te6edf3getTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3postTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3api Tff7b72= Te6edf3mockAxiosTb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"../../meshchatx/src/frontend/js/DialogUtils"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3alertTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"../../meshchatx/src/frontend/js/ToastUtils"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3successTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3errorTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3mountPage Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=>
Te6edf3mountTb4b4b4(Te6edf3AddInterfacePageTb4b4b4, Tb4b4b4{
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3mocksTff7b72: Tb4b4b4{
Te6edf3$routeTff7b72: Tb4b4b4{ Te6edf3queryTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3$routerTff7b72: Tb4b4b4{ Te6edf3pushTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3$tTff7b72: Tb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4=> Te6edf3msgTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3stubsTff7b72: Tb4b4b4[Ta5d6ff"RouterLink"Tb4b4b4, Ta5d6ff"MaterialDesignIcon"Tb4b4b4, Ta5d6ff"Toggle"Tb4b4b4, Ta5d6ff"ExpandingSection"Tb4b4b4, Ta5d6ff"FormLabel"Tb4b4b4, Ta5d6ff"FormSubLabel"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"AddInterfacePage.vue interface options"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3mockAxiosTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockImplementationTb4b4b4(Tff7b72async Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657StringTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3configTff7b72: Tb4b4b4{ Te6edf3is_transport_enabledTff7b72: Tff7b72true Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tffa657StringTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/api/v1/reticulum/instance"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3instanceTff7b72: Tb4b4b4{ Te6edf3enable_transportTff7b72: Tff7b72true Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tffa657StringTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/api/v1/reticulum/interface-modules"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3interfacepathTff7b72: Ta5d6ff"/tmp/meshchatx/reticulum/interfaces"Tb4b4b4,
Te6edf3modulesTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"ExampleInterface"Tb4b4b4, Te6edf3filenameTff7b72: Ta5d6ff"ExampleInterface.py"Tb4b4b4, Te6edf3sizeTff7b72: T79c0ff12 Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tffa657StringTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/api/v1/reticulum/interfaces"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3interfacesTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3messageTff7b72: Ta5d6ff"ok" Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"loads installed interface modules for custom external type"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"__external__"Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3loadInstalledInterfaceModulesTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3getTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"/api/v1/reticulum/interface-modules"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3interfaceModulesPathTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"interfaces"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3installedInterfaceModulesTb4b4b4)Tb4b4b4.Te6edf3toHaveLengthTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"interfaces.custom_external_install_button"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends AutoInterface group/discovery/data port settings"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"AutoLAN"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"AutoInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceGroupID Tff7b72= Ta5d6ff"homelab"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceDiscoveryScope Tff7b72= Ta5d6ff"site"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceDiscoveryPort Tff7b72= T79c0ff35000Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceDataPort Tff7b72= T79c0ff35001Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceMulticastAddressType Tff7b72= Ta5d6ff"permanent"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceDevices Tff7b72= Ta5d6ff"eth0,wlan0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceIgnoredDevices Tff7b72= Ta5d6ff"tun0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceConfiguredBitrate Tff7b72= T79c0ff5000000Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"AutoInterface"Tb4b4b4,
Te6edf3group_idTff7b72: Ta5d6ff"homelab"Tb4b4b4,
Te6edf3discovery_scopeTff7b72: Ta5d6ff"site"Tb4b4b4,
Te6edf3discovery_portTff7b72: T79c0ff35000Tb4b4b4,
Te6edf3data_portTff7b72: T79c0ff35001Tb4b4b4,
Te6edf3multicast_address_typeTff7b72: Ta5d6ff"permanent"Tb4b4b4,
Te6edf3devicesTff7b72: Ta5d6ff"eth0,wlan0"Tb4b4b4,
Te6edf3ignored_devicesTff7b72: Ta5d6ff"tun0"Tb4b4b4,
Te6edf3configured_bitrateTff7b72: T79c0ff5000000Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends TCP client advanced options (kiss/i2p/timeout/mtu)"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"TCPC"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPClientInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"example.com"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= T79c0ff4242Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceKISSFramingEnabled Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceI2PTunnelingEnabled Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceConnectTimeout Tff7b72= T79c0ff12Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceMaxReconnectTries Tff7b72= T79c0ff7Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceFixedMTU Tff7b72= T79c0ff512Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3kiss_framingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3i2p_tunneledTff7b72: Tff7b72trueTb4b4b4,
Te6edf3connect_timeoutTff7b72: T79c0ff12Tb4b4b4,
Te6edf3max_reconnect_triesTff7b72: T79c0ff7Tb4b4b4,
Te6edf3fixed_mtuTff7b72: T79c0ff512Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks TCP client save when fixed_mtu is below Reticulum minimum"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"TCPC"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPClientInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"example.com"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= T79c0ff4242Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceFixedMTU Tff7b72= T79c0ff485Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toHaveBeenCalledTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends TCP server device/prefer_ipv6/i2p_tunneled options"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"TCPS"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPServerInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72= Ta5d6ff"0.0.0.0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceListenPort Tff7b72= T79c0ff4242Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceNetworkDevice Tff7b72= Ta5d6ff"eth0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfacePreferIPV6 Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceI2PTunnelingEnabled Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3deviceTff7b72: Ta5d6ff"eth0"Tb4b4b4,
Te6edf3prefer_ipv6Tff7b72: Tff7b72trueTb4b4b4,
Te6edf3i2p_tunneledTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends BackboneInterface listener payload when listener mode is on"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"Backbone"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"BackboneInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBackboneListenMode Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBackboneListenIp Tff7b72= Ta5d6ff"0.0.0.0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBackboneListenPort Tff7b72= T79c0ff5151Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBackboneListenDevice Tff7b72= Ta5d6ff"eth1"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfacePreferIPV6 Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"leaked.example"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= T79c0ff9999Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3listen_ipTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0.0.0.0"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3listen_portTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff5151Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3deviceTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"eth1"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3prefer_ipv6Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3target_hostTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3target_portTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends RNode flow_control + id_callsign + id_interval"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"Radio"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"RNodeInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfacePort Tff7b72= Ta5d6ff"/dev/ttyUSB0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3RNodeMHzValue Tff7b72= T79c0ff868Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBandwidth Tff7b72= T79c0ff125000Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTxpower Tff7b72= T79c0ff7Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceSpreadingFactor Tff7b72= T79c0ff8Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceCodingRate Tff7b72= T79c0ff5Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceFlowControl Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceIDCallsign Tff7b72= Ta5d6ff"NOCALL"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceIDInterval Tff7b72= T79c0ff600Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceAirtimeLimitLong Tff7b72= T79c0ff1.5Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceAirtimeLimitShort Tff7b72= T79c0ff33.0Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3flow_controlTff7b72: Tff7b72trueTb4b4b4,
Te6edf3id_callsignTff7b72: Ta5d6ff"NOCALL"Tb4b4b4,
Te6edf3id_intervalTff7b72: T79c0ff600Tb4b4b4,
Te6edf3airtime_limit_longTff7b72: T79c0ff1.5Tb4b4b4,
Te6edf3airtime_limit_shortTff7b72: T79c0ff33.0Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends KISS serial + framing options"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"KISS"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"KISSInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfacePort Tff7b72= Ta5d6ff"/dev/ttyACM0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceSpeed Tff7b72= T79c0ff19200Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceDatabits Tff7b72= T79c0ff8Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceParity Tff7b72= Ta5d6ff"N"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceStopbits Tff7b72= T79c0ff1Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfacePreamble Tff7b72= T79c0ff200Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTXTail Tff7b72= T79c0ff30Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfacePersistence Tff7b72= T79c0ff128Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceSlotTime Tff7b72= T79c0ff25Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceFlowControl Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceIDCallsign Tff7b72= Ta5d6ff"BEACON"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceIDInterval Tff7b72= T79c0ff1200Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3speedTff7b72: T79c0ff19200Tb4b4b4,
Te6edf3databitsTff7b72: T79c0ff8Tb4b4b4,
Te6edf3parityTff7b72: Ta5d6ff"N"Tb4b4b4,
Te6edf3stopbitsTff7b72: T79c0ff1Tb4b4b4,
Te6edf3preambleTff7b72: T79c0ff200Tb4b4b4,
Te6edf3txtailTff7b72: T79c0ff30Tb4b4b4,
Te6edf3persistenceTff7b72: T79c0ff128Tb4b4b4,
Te6edf3slottimeTff7b72: T79c0ff25Tb4b4b4,
Te6edf3flow_controlTff7b72: Tff7b72trueTb4b4b4,
Te6edf3id_callsignTff7b72: Ta5d6ff"BEACON"Tb4b4b4,
Te6edf3id_intervalTff7b72: T79c0ff1200Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends AX25KISS callsign + ssid"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"AX25"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"AX25KISSInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfacePort Tff7b72= Ta5d6ff"/dev/ttyACM1"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceCallsign Tff7b72= Ta5d6ff"N0CALL"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceSSID Tff7b72= T79c0ff7Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3callsignTff7b72: Ta5d6ff"N0CALL"Tb4b4b4,
Te6edf3ssidTff7b72: T79c0ff7Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends I2P connectable=false when peer disables it"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"I2P"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"I2PInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeers Tff7b72= Tb4b4b4[Ta5d6ff"abcdef.b32.i2p"Tb4b4b4]Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceConnectable Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3config Tff7b72= Tb4b4b4{ Tb4b4b4...Tb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3config Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4, Te6edf3is_transport_enabledTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3reticulumInstance Tff7b72= Tb4b4b4{
Tb4b4b4...Tb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3reticulumInstance Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3enable_transportTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3existingInterfaces Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"I2PInterface"Tb4b4b4,
Te6edf3peersTff7b72: Tb4b4b4[Ta5d6ff"abcdef.b32.i2p"Tb4b4b4]Tb4b4b4,
Te6edf3connectableTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"surfaces backend port-in-use errors to the user"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3ToastUtils Tff7b72= Tb4b4b4(Tff7b72await Tff7b72importTb4b4b4(Ta5d6ff"../../meshchatx/src/frontend/js/ToastUtils"Tb4b4b4)Tb4b4b4)Tb4b4b4.Tff7b72defaultTb4b4b4;
Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockRejectedValueOnceTb4b4b4(Tb4b4b4{
Te6edf3responseTff7b72: Tb4b4b4{
Te6edf3statusTff7b72: T79c0ff409Tb4b4b4,
Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3messageTff7b72: Ta5d6ff"The TCP port 4242 on 0.0.0.0 is already in use" Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"TCPS"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPServerInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72= Ta5d6ff"0.0.0.0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceListenPort Tff7b72= T79c0ff4242Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Te6edf3expectTb4b4b4.Te6edf3stringContainingTb4b4b4(Ta5d6ff"already in use"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends internal mode and recursive_prs / announces_from_internal"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"InternalLAN"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPServerInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72= Ta5d6ff"127.0.0.1"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceListenPort Tff7b72= T79c0ff4242Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3mode Tff7b72= Ta5d6ff"internal"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3recursive_prs Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3announces_from_internal Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3modeTff7b72: Ta5d6ff"internal"Tb4b4b4,
Te6edf3recursive_prsTff7b72: Tff7b72trueTb4b4b4,
Te6edf3announces_from_internalTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends BackboneInterface fast-flapping options in listener mode"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"Backbone"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"BackboneInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBackboneListenMode Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBackboneListenIp Tff7b72= Ta5d6ff"0.0.0.0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBackboneListenPort Tff7b72= T79c0ff5151Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceBlockFastFlapping Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceFastFlappingBlockTime Tff7b72= T79c0ff30Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceFastFlappingThreshold Tff7b72= T79c0ff10Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceFastFlappingGrace Tff7b72= T79c0ff2Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3block_fast_flappingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3fast_flapping_block_timeTff7b72: T79c0ff30Tb4b4b4,
Te6edf3fast_flapping_thresholdTff7b72: T79c0ff10Tb4b4b4,
Te6edf3fast_flapping_graceTff7b72: T79c0ff2Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends discovery location_cmd when discoverable"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"TCPS"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPServerInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72= Ta5d6ff"0.0.0.0"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceListenPort Tff7b72= T79c0ff4242Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Ta5d6ff"Public"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3location_cmd Tff7b72= Ta5d6ff"/usr/local/bin/gps-loc"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3mode Tff7b72= Ta5d6ff"gateway"Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3discoverableTff7b72: Ta5d6ff"yes"Tb4b4b4,
Te6edf3location_cmdTff7b72: Ta5d6ff"/usr/local/bin/gps-loc"Tb4b4b4,
Te6edf3modeTff7b72: Ta5d6ff"gateway"Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────